// 权限拦截 导航守卫 路由守卫  router
import router from './router' // 引入路由实例

import store from './store' // 引入vuex store实例

// 导入 message
import { Message } from 'element-ui'

import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'

const whiteList = ['/login', '/404'] // 定义白名单  所有不受权限控制的页面

// 路由的前置守卫
router.beforeEach(async (to, form, next) => {
    Nprogress.start() //开启进度条
  const token = store.getters.token
  //  首先判断有无token
  if (token) {
    //判断用户信息是否存在
    const userInfo =store.getters.userInfo
    if(!userInfo.username){
      //用户信息不存在 需要重新发送
     await store.dispatch('user/getUserInfo')
    }
    // 如果有token 继续判断是不是去登录页
    if (to.path == '/login') {
      //  表示去的是登录页
      Message({
        type: 'info',
        message: '检测到您已经登录，请不要重复登录'
      })
      next('/') // 跳到主页
    } else {
      next() // 直接放行
    }
  } else {
    // 如果没有token
    if (whiteList.indexOf(to.path) > -1) {
      // 如果找到了 表示在在名单里面
      next()
    } else {
        Message({
            type: 'warning',
            message: '对不起，您还没有登录'
          })
      next(`/login?_redirect=${to.path}`) // 跳到登录页
    }
  }
  Nprogress.done()
})

router.afterEach((to,from)=>{
    Nprogress.done() //关闭进度条
})